package org.hank.demoproject.room

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import org.hank.roomdemo.RoomDao
import org.hank.roomdemo.UserInfo

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2021/4/29 10:59
 *描述:
 */
@Database(entities = [UserInfo::class], version = 1,exportSchema = false)
abstract class MyRoomDataBase : RoomDatabase() {
    abstract fun rooDao(): RoomDao

    companion object {
        @Volatile
        private var sInstance: MyRoomDataBase? = null
        val DATABASE_NAME = "TEST_DB"

        open fun getInstance(context: Context): MyRoomDataBase {
            if (sInstance == null) {
                sInstance = createInstance(context)
            }
            return sInstance!!
        }


        private fun createInstance(context: Context): MyRoomDataBase {
            return Room.databaseBuilder(
                context,
                MyRoomDataBase::class.java,
                DATABASE_NAME
            )
                .build()
        }
    }
}